/**********************************************************************************\
** 文件名称: HCSR04.c
** 创建人员: YCG
** 创建日期: 2017-11-1
** 文档描述:
** 版本代号: V0.1
** 版本说明: 初始版本
  \********************************************************************************/
#include "HCSR04.h"

static u32 last_time, now_time;
u16 distance = 0;
/*******************************************************************************
** 函数名称: HCSR04_init
** 功能描述: 超声波模块初始化
** 参数说明: None
** 返回说明: None
** 创建人员: YCG
** 创建日期: 2018-11-17
********************************************************************************/
void HC_init()
{
    INT1 = 1;
    IT1 = 0;                    //设置INT1的中断类型 (1:仅下降沿 0:上升沿和下降沿)
    EX1 = 1;                    //使能INT1中断
    EA = 1;
}
/*******************************************************************************
** 函数名称: HCSR04_read
** 功能描述: 获取超声波模块的距离
** 参数说明: None
** 返回说明: 得到的距离，单位为cm
** 创建人员: YCG
** 创建日期: 2018-11-15
********************************************************************************/
u8 HC_read()
{
    return distance;
}

void exint1() interrupt 2       //INT1中断入口
{
    u16 d;
    if(INT1 == 1) {
        last_time = micros();
    } else {
        now_time = micros();
        d = (now_time - last_time) / 58;
        if(d < 300) {
            distance = d;
            updata_hc_time();
        }
    }
}

